var Student = { name: 'Robot', height: 1.2, run: function () { console.log(this.name + ' is running...'); } };  // 原型对象
var xiaoming = { name: '小明' };
xiaoming.__proto__ = Student;  // 把 xiaoming 的原型指向了对象 Student, 看上去 xiaoming 仿佛是从 Student 继承下来的
xiaoming.run()  // 小明 is running...
// 还可以动态指向其他原型对象, js 中没有类, 只有对象
var Bird = { fly: function () { console.log(this.name + ' is flying...'); } };
xiaoming.__proto__ = Bird; xiaoming.fly();  // 小明 is flying..., 好 happy

// 不要直接用 __proto__ 指向其他对象
// Object.create() 方法可以传入一个原型对象, 并创建一个基于该原型的新对象, 因此, 我们可以编写一个函数来创建 xiaoming
function createStudent(name) { var s = Object.create(Student); s.name = name; return s; }
var xiaoming = createStudent('小明');
xiaoming.run();  // 小明 is running...
console.log(xiaoming.__proto__ === Student);  // true
